// 同学找到了在线测试，看似是题目3，其实不是
// 区别在于数据量，如下测试链接中的题目
// 会议的数量10^6，会议的开始、结束时间也是10^6
// 排序会超时，C++的同学可能不会，但是java的同学会
// 而且根据这个数据量，最优解一定不是排序！
// 会议开始、结束时间也是10^6规模，所以不排序也可以做，具体看如下代码和注释
// 并不是课上讲错了，而是这个数据状况太特殊
// 测试链接 : https://www.luogu.com.cn/problem/P1803
// 提交以下的code，可以直接通过

#include <bits/stdc++.h>

using namespace std;

const int MAXN = 1000001;
array<int, 2> arr[MAXN];
int n;

int compute()
{
    sort(arr, arr + n, [](auto& a, auto& b){
        return a[1] < b[1]; // 根据会议的结束时间进行排序
    });
    int ans = 0;
    for(int i = 0, last = -1; i < n; ++i)
    {
        // 这次会议的开始时间晚于上一次安排的会议，那么
        // 就可以安排本次会议
        if(last <= arr[i][0])
        {
            last = arr[i][1];
            ++ans;
        }
    }
    return ans;
}


int main()
{
    scanf("%d", &n);
    for(int i = 0; i < n; ++i)
    {
        scanf("%d%d", &arr[i][0], &arr[i][1]);
    }
    printf("%d\n", compute());

    return 0;
}